Lowranceusr: internal tightening of types, better scope management.
authorRobert Lipe <robertlipe@gpsbabel.org>
Mon, 9 Dec 2019 01:14:09 +0000 (19:14 -0600)
committerRobert Lipe <robertlipe@gpsbabel.org>
Mon, 9 Dec 2019 01:14:09 +0000 (19:14 -0600)
lowranceusr.cc

index 16334eb4c01862692fc81e420105caf5ae52e14b..c5a1f775ebaeaf5534f48c60c804c5b13efb33d2 100644 (file)
@@ -1749,7 +1749,7 @@ lowranceusr_waypt_disp(const Waypoint* wpt)
     /* Lowrance needs it as seconds since Jan 1, 2000 */
     Time -= base_time_secs;
     if (global_opts.debug_level >= 2) {
-      printf("creation_time %d, '%s'", (int)Time, qPrintable(wpt->GetCreationTime().toString("yyyy-MM-dd hh:mm:ss")));
+      printf("creation_time %d, '%s'", Time, qPrintable(wpt->GetCreationTime().toString("yyyy-MM-dd hh:mm:ss")));
     }
   } else {
     /* If false, make sure it is an unknown time value */
@@ -2005,31 +2005,26 @@ lowranceusr_trail_hdr(const route_head* trk)
 static void
 lowranceusr_route_hdr(const route_head* rte)
 {
-  char* name, tmp_name[20];
-  char route_reversed=0;
+  QString name;
 
   /* route name */
   //TODO: This whole function needs to be replaced...
   if (!rte->rte_name.isEmpty()) {
-    name = xstrdup(rte->rte_name);
+    name = rte->rte_name;
   } else if (!rte->rte_desc.isEmpty()) {
-    name = xstrdup(rte->rte_desc);
+    name = rte->rte_desc;
   } else {
-    tmp_name[0]='\0';
-    snprintf(tmp_name, sizeof(tmp_name), "Babel R%d", ++lowrance_route_count);
-    name = xstrdup(tmp_name);
-  }
-  int text_len = strlen(name);
-  if (text_len > MAXUSRSTRINGSIZE) {
-    text_len = MAXUSRSTRINGSIZE;
+    name = QString().sprintf("Babel R%d", ++lowrance_route_count);
   }
+  int text_len = std::min(name.size(), MAXUSRSTRINGSIZE);
+  name.truncate(text_len);
   gbfputint32(text_len, file_out);
-  gbfwrite(name, 1, text_len, file_out);
-  xfree(name);
+  gbfputs(name, file_out);
 
   /* num legs */
   short num_legs = (short) rte->rte_waypt_ct;
   gbfputint16(num_legs, file_out);
+  char route_reversed=0;
   gbfwrite(&route_reversed, 1, 1, file_out);
 
   if (global_opts.debug_level >= 1)
@@ -2129,29 +2124,24 @@ lowranceusr_trail_disp(const Waypoint* wpt)
 static void
 lowranceusr_merge_trail_hdr(const route_head* trk)
 {
-  char* name, tmp_name[20];
-
+  QString name;
   if (++trail_count == 1) {
     if (!trk->rte_name.isEmpty()) {
-      name = xstrdup(trk->rte_name);
+      name = trk->rte_name;
     } else if (!trk->rte_desc.isEmpty()) {
-      name = xstrdup(trk->rte_desc);
+      name = trk->rte_desc;
     } else {
-      tmp_name[0]='\0';
-      snprintf(tmp_name, sizeof(tmp_name), "Babel %d", trail_count);
-      name = xstrdup(tmp_name);
-    }
-    int text_len = strlen(name);
-    if (text_len > MAXUSRSTRINGSIZE) {
-      text_len = MAXUSRSTRINGSIZE;
+      name = QString().sprintf("Babel %d", trail_count);
     }
+
+    int text_len = std::min(MAXUSRSTRINGSIZE, name.size());
+    name.truncate(text_len);
     gbfputint32(text_len, file_out);
+    gbfputs(name, file_out);
 
     if (global_opts.debug_level >= 1) {
-      printf(MYNAME " trail_hdr: trail name = %s\n", name);
+      printf(MYNAME " trail_hdr: trail name = %s\n", CSTR(name));
     }
-
-    gbfwrite(name, 1, text_len, file_out);
   }
 
   trail_point_count += (short) trk->rte_waypt_ct;